#ifndef __MixAlgorithm_H__
#define __MixAlgorithm_H__
#include <stdint.h>

namespace MixAlgorithm
{
    /**
     *  mix音频数据，数据必须为16位的音频数据，合成后的数据存放在buffA
     *
     *  @param buffA       数据A的指针
     *  @param lenA        数据A的长度
     *  @param buffB       数据B的指针
     *  @param lenB        数据B的长度
     *  @param proportionA 数据A占的比例
     *  @param proportionB 数据B占的比例
     */
	void straight16(uint8_t* buffA, int lenA, uint8_t* buffB, int lenB,
		float proportionA, float proportionB);

    /**
     *  mix音频数据，数据必须为16位的音频数据，合成后的数据存放在buffA
     *  先融合新数据，再融合久数据，然后把新旧数据做渐变处理，
     *  渐变后，越接近开头的数据越和旧数据相似，越接近结尾的数据越与新数据相似
     *
     *  @param buffA                数据A的指针
     *  @param lenA                 数据A的长度
     *  @param buffB                数据B的指针
     *  @param lenB                 数据B的长度
     *  @param proportionA          数据A占的比例
     *  @param proportionB          数据B占的比例
     *  @param old_buffA            old
     *  @param old_lenA             old
     *  @param old_buffB            old
     *  @param old_lenB             old
     *  @param old_proportionA      old
     *  @param old_proportionB      old
     */
	void straight16_smooth(uint8_t* buffA, int lenA, uint8_t* buffB, int lenB,
		float proportionA, float proportionB,
		uint8_t* old_buffA, int old_lenA, uint8_t* old_buffB, int old_lenB,
		float old_proportionA, float old_proportionB);
    
    
    

    int audio16_mix(uint8_t* buffA,float proportionA,
                    uint8_t* buffB,float proportionB,
                    uint8_t* old_buffA,float old_proportionA,
                    uint8_t* old_buffB,float old_proportionB,
                    float startProportion,float changeProportion,
                    uint8_t* destBuff,uint32_t len);
    
    
};

#endif //__MixAlgorithm_H__
